Debugging techniques for declarative languages: Profiling, program slicing and algorithmic debugging

نویسنده

  • Josep Silva
چکیده

The task of debugging can be arduous. A bug can be evident with a single glance, or it can be hidden in the deepest lurking place of our program. Nevertheless, surprisingly, debugging is one of the software processes that has been mostly abandoned by the scientific community, and the same debugging techniques used twenty years ago are still being used today. The situation is not different regarding declarative languages. Or it is indeed worst; because declarative languages can pose additional difficulties due, for instance, to the lazy evaluation mechanism. In this thesis, we revise the current debugging methods for declarative languages and we develop some new methods and techniques which are based on profiling, program slicing, and algorithmic debugging. In short, the main contributions of the thesis are: • The definition of a profiling scheme for functional logic programs which is based on the use of cost centers and that allows us to measure different kinds of symbolic costs. • The formulation of a new dynamic slicing technique based on redex trails, its application to debugging and its adaptation for the specialization of modern multi-paradigm declarative programs. • The introduction of a new algorithmic debugging scheme which combines conventional algorithmic debugging with program slicing. • The definition of three new strategies for algorithmic debugging. • The development of a comparative study and a subsequent classification of program slicing techniques and algorithmic debugging strategies. Part of the material included in this thesis has been previously presented in [Albert et al., 2003; Braßel et al., 2004a; Ochoa et al., 2004a, 2005, 2006; Silva and Chitil, 2006; Silva, 2006].

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Slicing of Constraint Logic Programs

Abstract. Slicing is a program analysis technique originally developed for imperative languages. It facilitates understanding of data flow and debugging. This paper discusses slicing of Constraint Logic Programs. Constraint Logic Programming (CLP) is an emerging software technology with a growing number of applications. Data flow in constraint programs is not explicit, and for this reason the c...

متن کامل

A Slicing Tool for Lazy Functional Logic Programs

Program slicing is a well-known technique that has been widely used for debugging in the context of imperative programming. Debugging is a particularly difficult task within lazy declarative programming. In particular, there exist very few approaches to program slicing in this context. In this paper, we describe a slicing tool for firstorder lazy functional logic languages. We also illustrate i...

متن کامل

Semi-Automatic Fault Localization and Behavior Verification for Physical System Simulation Models

Mathematical modeling and simulation of complex physical systems are emerging as key technologies in engineering. Modern approaches to physical system simulation allow users to specify simulation models with the help of equation-based languages. Due to the highlevel declarative abstraction of these languages program errors are extremely hard to find. This paper presents an algorithmic automated...

متن کامل

Forward Slicing of Multi-paradigm Declarative Programs Based on Partial Evaluation

Program slicing has been mainly studied in the context of imperative languages, where it has been applied to many software engineering tasks, like program understanding, maintenance, debugging, testing, code reuse, etc. This paper introduces the first forward slicing technique for multi-paradigm declarative programs. In particular, we show how program slicing can be defined in terms of online p...

متن کامل

A Declarative Debugger for a Logical-Functional Language

Logic and functional programming languages have many advantages and there is a growing trend to develop languages which incorporate both these paradigms. One of the disadvantages of such languages is that the execution mechanisms are so complex that traditional debugging methods are diicult to use. Declarative debugging techniques have been successful applied to Prolog and more recently functio...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:
  • AI Commun.

دوره 21  شماره 

صفحات  -

تاریخ انتشار 2008